/*
 程序作者: 戴雨晨
 完成日期: 2014年2月28日
 章    节: 第 3 章
 题    号: 习题3
 题    目: 设计一个类，它具有一个float 指针成员。构造函数具有一个
           整形参数count ，它为指针成员分配count 个存储数据的元素
           空间；析构函数释放指针指向的空间。另外，设计两个函数成
           员完成如下功能：
             （1）向指针指向的空间中存储数据；
             （2）返回这些数的平均值。
           编写一个完整的程序检验该类的正确性。
*/
#include <iostream>
using namespace std;
class array
{
private:
	float *pointer;
	int total,top;
public:
	array(int count)
	{
		total=count-1;
		top=-1;
		pointer=new float[count];
	}
	bool add(float number);
	float get_average();
	virtual ~array()
	{
		delete pointer;
	}
};
bool array::add(float number)
{
	if(top>=total)
		return false;
	else
	{
		top++;
		*(pointer+top)=number;
	}
	return true;
}
float array::get_average()
{
	float sum;
	for(int i=0;i<=top;i++)
		sum+=*(pointer+i);
	return sum/(top+1);
}
int main()
{
	float number;
	int n;
	string operation;
	cout<<"Input the number of the elements that you want to create:";
	cin>>n;
	array data(n);
	while(1)
	{
		cin>>operation;
		if(operation=="exit")
			break;
		else if(operation=="add")
		{
			cout<<"Input the number:";
			cin>>n;
			if(data.add(n))
				cout<<"Adding successfully"<<endl;
			else
				cout<<"The array is full"<<endl;
		}
		else if(operation=="average")
		{
			number=data.get_average();
			cout<<"The average is "<<number<<"."<<endl;
		}
		else
		{
			cout<<"Operation error!"<<endl;
		}
	}
	return 0;
}